home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / share / perl5 / Image / ExifTool.pod < prev   
Encoding:
Text File  |  2010-03-04  |  65.1 KB  |  1,963 lines

  1. #------------------------------------------------------------------------------
  2. # File:         ExifTool.pod - Documentation for File::ExifTool
  3. #
  4. # Description:  Read and write meta information
  5. #
  6. # URL:          http://owl.phy.queensu.ca/~phil/exiftool/
  7. #
  8. # Legal:        Copyright (c) 2003-2010, Phil Harvey (phil at owl.phy.queensu.ca)
  9. #               This library is free software; you can redistribute it and/or
  10. #               modify it under the same terms as Perl itself.
  11. #------------------------------------------------------------------------------
  12.  
  13. =head1 NAME
  14.  
  15. Image::ExifTool - Read and write meta information
  16.  
  17. =head1 SYNOPSIS
  18.  
  19.   use Image::ExifTool qw(:Public);
  20.  
  21.   # ---- Simple procedural usage ----
  22.  
  23.   # Get hash of meta information tag names/values from an image
  24.   $info = ImageInfo('a.jpg');
  25.  
  26.   # ---- Object-oriented usage ----
  27.  
  28.   # Create a new Image::ExifTool object
  29.   $exifTool = new Image::ExifTool;
  30.  
  31.   # Extract meta information from an image
  32.   $exifTool->ExtractInfo($file, \%options);
  33.  
  34.   # Get list of tags in the order they were found in the file
  35.   @tagList = $exifTool->GetFoundTags('File');
  36.  
  37.   # Get the value of a specified tag
  38.   $value = $exifTool->GetValue($tag, $type);
  39.  
  40.   # Get a tag description
  41.   $description = $exifTool->GetDescription($tag);
  42.  
  43.   # Get the group name associated with this tag
  44.   $group = $exifTool->GetGroup($tag, $family);
  45.  
  46.   # Set a new value for a tag
  47.   $exifTool->SetNewValue($tag, $newValue);
  48.  
  49.   # Write new meta information to a file
  50.   $success = $exifTool->WriteInfo($srcfile, $dstfile);
  51.  
  52.   # ...plus a host of other useful methods...
  53.  
  54. =head1 DESCRIPTION
  55.  
  56. ExifTool provides an extensible set of perl modules to read and write meta
  57. information in a wide variety of files, including the maker note information
  58. of many digital cameras by various manufacturers such as Canon, Casio,
  59. FujiFilm, HP, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Nikon,
  60. Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Ricoh, Sanyo, Sigma/Foveon and
  61. Sony.
  62.  
  63. Below is a list of file types and meta information formats currently
  64. supported by ExifTool (r = read, w = write, c = create):
  65.  
  66.   File Types
  67.   ------------+-------------+-------------+-------------+------------
  68.   3FR   r     | DOC   r     | K25   r     | PAGES r     | RWZ   r
  69.   3G2   r     | DOCX  r     | KDC   r     | PBM   r/w   | RM    r
  70.   3GP   r     | DVB   r     | KEY   r     | PDF   r/w   | SO    r
  71.   ACR   r     | DYLIB r     | LNK   r     | PEF   r/w   | SR2   r/w
  72.   AFM   r     | EIP   r     | M2TS  r     | PFA   r     | SRF   r
  73.   AI    r/w   | EPS   r/w   | M4A/V r     | PFB   r     | SRW   r/w
  74.   AIFF  r     | ERF   r/w   | MEF   r/w   | PFM   r     | SVG   r
  75.   APE   r     | EXE   r     | MIE   r/w/c | PGM   r/w   | SWF   r
  76.   ARW   r/w   | EXIF  r/w/c | MIFF  r     | PICT  r     | THM   r/w
  77.   ASF   r     | F4A/V r     | MNG   r/w   | PNG   r/w   | TIFF  r/w
  78.   AVI   r     | FLA   r     | MOS   r/w   | PPM   r/w   | TTC   r
  79.   BMP   r     | FLAC  r     | MOV   r     | PPT   r     | TTF   r
  80.   BTF   r     | FLV   r     | MP3   r     | PPTX  r     | VRD   r/w/c
  81.   COS   r     | FPX   r     | MP4   r     | PS    r/w   | WAV   r
  82.   CR2   r/w   | GIF   r/w   | MPC   r     | PSB   r/w   | WDP   r/w
  83.   CRW   r/w   | GZ    r     | MPG   r     | PSD   r/w   | WMA   r
  84.   CS1   r/w   | HDP   r/w   | MPO   r/w   | PSP   r     | WMV   r
  85.   DCM   r     | HTML  r     | MQV   r     | QTIF  r     | X3F   r
  86.   DCP   r/w   | ICC   r/w/c | MRW   r/w   | RA    r     | XLS   r
  87.   DCR   r     | IIQ   r     | NEF   r/w   | RAF   r/w   | XLSX  r
  88.   DFONT r     | IND   r/w   | NRW   r/w   | RAM   r     | XMP   r/w/c
  89.   DIVX  r     | ITC   r     | NUMBERS r   | RAW   r/w   | ZIP   r
  90.   DJVU  r     | JNG   r/w   | OGG   r     | RIFF  r     |
  91.   DLL   r     | JP2   r/w   | ORF   r/w   | RW2   r/w   |
  92.   DNG   r/w   | JPEG  r/w   | OTF   r     | RWL   r/w   |
  93.  
  94.   Meta Information
  95.   ----------------------+----------------------+---------------------
  96.   EXIF           r/w/c  |  JPEG 2000      r    |  APE            r
  97.   GPS            r/w/c  |  DICOM          r    |  Vorbis         r
  98.   IPTC           r/w/c  |  Flash          r    |  SPIFF          r
  99.   XMP            r/w/c  |  FlashPix       r    |  DjVu           r
  100.   MakerNotes     r/w/c  |  QuickTime      r    |  M2TS           r
  101.   Photoshop IRB  r/w/c  |  GeoTIFF        r    |  PE/COFF        r
  102.   ICC Profile    r/w/c  |  PrintIM        r    |  AVCHD          r
  103.   MIE            r/w/c  |  ID3            r    |  ZIP            r
  104.   JFIF           r/w/c  |  Kodak Meta     r    |  (and more)
  105.   Ducky APP12    r/w/c  |  Ricoh RMETA    r    |
  106.   PDF            r/w/c  |  Picture Info   r    |
  107.   CIFF           r/w    |  Adobe APP14    r    |
  108.   AFCP           r/w    |  MPF            r    |
  109.   PhotoMechanic  r/w    |  Stim           r    |
  110.  
  111. =head1 CONFIGURATION
  112.  
  113. User-defined tags can be added via the ExifTool configuration file, or by
  114. defining the %Image::ExifTool::UserDefined hash before calling any ExifTool
  115. methods.  See "ExifTool_config" in the ExifTool distribution for more
  116. details.
  117.  
  118. By default ExifTool looks for a configuration file named ".ExifTool_config"
  119. first in your home directory, then in the directory of the application
  120. script, but a different file may be specified by setting the ExifTool
  121. C<configFile> variable before using Image::ExifTool.  For example:
  122.  
  123.     BEGIN { $Image::ExifTool::configFile = '/Users/phil/myconfig.cfg' }
  124.     use Image::ExifTool;
  125.  
  126. or the configuration feature may be disabled by setting C<configFile> to an
  127. empty string:
  128.  
  129.     BEGIN { $Image::ExifTool::configFile = '' }
  130.     use Image::ExifTool;
  131.  
  132. =head1 EXPORTS
  133.  
  134. Exports nothing by default, but L</ImageInfo> and all static methods may be
  135. exported with the C<:Public> export list.
  136.  
  137. =head1 METHODS
  138.  
  139. All ExifTool features are accessed through the methods of the public
  140. interface listed below.  Other Image::ExifTool methods and modules should
  141. not be accessed directly because their interface may change with future
  142. versions.
  143.  
  144. None of these methods should ever die or issue warnings to STDERR if called
  145. with the proper arguments (with the exception of L</SetNewValue> which
  146. returns an error string when called in list context, or sends the error to
  147. STDERR otherwise).  Error and warning messages that occur during processing
  148. are stored in the values of the Error and Warning tags, and are accessible
  149. via the L</GetValue> method.
  150.  
  151. =head2 new
  152.  
  153. Creates a new ExifTool object.
  154.  
  155.     $exifTool = new Image::ExifTool;
  156.  
  157. Note that ExifTool uses AUTOLOAD to load non-member methods, so any class
  158. using Image::ExifTool as a base class must define an AUTOLOAD which calls
  159. Image::ExifTool::DoAutoLoad().  ie)
  160.  
  161.     sub AUTOLOAD
  162.     {
  163.         Image::ExifTool::DoAutoLoad($AUTOLOAD, @_);
  164.     }
  165.  
  166. =head2 ImageInfo
  167.  
  168. Read image file and return meta information.  This is the one step function
  169. for retrieving meta information from an image.  Internally, L</ImageInfo>
  170. calls L</ExtractInfo> to extract the information, L</GetInfo> to generate
  171. the information hash, and L</GetTagList> for the returned tag list.
  172.  
  173.     # return meta information for 2 tags only (procedural)
  174.     $info = ImageInfo($filename, $tag1, $tag2);
  175.  
  176.     # return information about an open image file (object-oriented)
  177.     $info = $exifTool->ImageInfo(\*FILE);
  178.  
  179.     # return information from image data in memory for specified tags
  180.     %options = (PrintConv => 0);
  181.     @tagList = qw(filename imagesize xmp:creator exif:* -ifd1:*);
  182.     $info = ImageInfo(\$imageData, \@tagList, \%options);
  183.  
  184.     # extract information from an embedded thumbnail image
  185.     $info = ImageInfo('image.jpg', 'thumbnailimage');
  186.     $thumbInfo = ImageInfo($$info{ThumbnailImage});
  187.  
  188. =over 4
  189.  
  190. =item Inputs:
  191.  
  192. L</ImageInfo> is very flexible about the input arguments, and interprets
  193. them based on their type.  It may be called with one or more arguments.
  194. The one required argument is either a SCALAR (the image file name), a file
  195. reference (a reference to the image file) or a SCALAR reference (a
  196. reference to the image in memory).  Other arguments are optional.  The
  197. order of the arguments is not significant, except that the first SCALAR is
  198. taken to be the file name unless a file reference or scalar reference comes
  199. earlier in the argument list.
  200.  
  201. Below is an explanation of how the L</ImageInfo> function arguments are
  202. interpreted:
  203.  
  204. =over 4
  205.  
  206. =item ExifTool ref
  207.  
  208. L</ImageInfo> may be called with an ExifTool object if desired.  The
  209. advantage of using the object-oriented form is that the options may be set
  210. before calling L</ImageInfo>, and the object may be used afterward to access
  211. member functions.  Must be the first argument if used.
  212.  
  213. =item SCALAR
  214.  
  215. The first scalar argument is taken to be the file name unless an earlier
  216. argument specified the image data via a file reference (file ref) or data
  217. reference (SCALAR ref).  The remaining scalar arguments are names of tags
  218. for requested information.  If no tags are specified, all possible
  219. information is extracted.
  220.  
  221. Tag names are case-insensitive and may be prefixed by optional group names
  222. separated by colons.  A group name may begin with a family number (ie.
  223. '1IPTC:Keywords'), to restrict matches to a specific family.  A tag name of
  224. '*' may be used, thus allowing 'GROUP:*' to represent all tags in a specific
  225. group, or a group name of '*' may be used, in which case all available
  226. instances of the specified tag are returned regardless of the L</Duplicates>
  227. setting (ie. '*:WhiteBalance').  Multiple groups may be specified (ie.
  228. 'EXIF:Time:*' extracts all EXIF Time tags).  And finally, a leading '-'
  229. indicates a tag to be excluded (ie. '-IFD1:*'), or a trailing '#' causes the
  230. ValueConv value to be returned for this tag.
  231.  
  232. Note that keys in the returned information hash and elements of the returned
  233. tag list are not necessarily the same as these tag names -- group names are
  234. removed, the case may be changed, and an instance number may be added.  For
  235. this reason it is best to use either the keys of the returned hash or the
  236. elements of the tag array when accessing the tag values.
  237.  
  238. See L<Image::ExifTool::TagNames|Image::ExifTool::TagNames> for a complete
  239. list of ExifTool tag names.
  240.  
  241. =item File ref
  242.  
  243. A reference to an open image file.  If you use this method (or a SCALAR
  244. reference) to access information in an image, the FileName and Directory
  245. tags will not be returned.  (Also, the FileSize, FileModifyDate and
  246. FilePermissions tags will not be returned unless it is a plain file.)  Image
  247. processing begins at the current file position, and on return the file
  248. position is unspecified.  May be either a standard filehandle, or a
  249. reference to a L<File::RandomAccess|File::RandomAccess> object.  Note that
  250. the file remains open and must be closed by the caller after L</ImageInfo>
  251. returns.
  252.  
  253. [Advanced:  To allow a non-rewindable stream (ie. a network socket) to be
  254. re-read after processing with ExifTool, first wrap the file reference in a
  255. L<File::RandomAccess|File::RandomAccess> object, then pass this object to
  256. L</ImageInfo>.  The L<File::RandomAccess|File::RandomAccess> object will
  257. buffer the file if necessary, and may be used to re-read the file after
  258. L</ImageInfo> returns.]
  259.  
  260. =item SCALAR ref
  261.  
  262. A reference to image data in memory.
  263.  
  264. =item ARRAY ref
  265.  
  266. Reference to a list of tag names.  On entry, any elements in the list are
  267. added to the list of requested tags.  Tags with names beginning with '-' are
  268. excluded.  On return, this list is updated to contain an ordered list of tag
  269. keys for all extracted tags.
  270.  
  271. =item HASH ref
  272.  
  273. Reference to a hash containing the options settings.  See L</Options>
  274. documentation below for a list of available options.  Options specified
  275. as arguments to L</ImageInfo> take precedence over L</Options> settings.
  276.  
  277. =back
  278.  
  279. =item Return Values:
  280.  
  281. L</ImageInfo> returns a reference to a hash of tag key/value pairs.  The tag
  282. keys are identifiers, which are similar to the tag names but may have an
  283. embedded instance number if multiple tags with the same name were extracted
  284. from the image.  Many of the ExifTool functions require a tag key as an
  285. argument. Use L</GetTagName [static]> to get the tag name for a given tag
  286. key.  Note that the case of the tag names may not be the same as requested.
  287. Here is a simple example to print out the information returned by
  288. L</ImageInfo>:
  289.  
  290.     foreach (sort keys %$info) {
  291.         print "$_ => $$info{$_}\n";
  292.     }
  293.  
  294. Values of the returned hash are usually simple scalars, but a scalar
  295. reference is used to indicate binary data and an array reference may be used
  296. to indicate a list.  Lists of values are joined by commas into a single
  297. string only if the PrintConv option is enabled and the List option is
  298. disabled (which are the defaults).  Note that binary values are not
  299. necessarily extracted unless specifically requested or the Binary option is
  300. set.  If not extracted the value is a reference to a string of the form
  301. "Binary data ##### bytes".  The value may also be a hash reference if the
  302. Struct option is enabled.
  303.  
  304. The code below gives an example of how to handle these return values, as
  305. well as illustrating the use of other ExifTool functions:
  306.  
  307.     use Image::ExifTool;
  308.     my $exifTool = new Image::ExifTool;
  309.     $exifTool->Options(Unknown => 1);
  310.     my $info = $exifTool->ImageInfo('a.jpg');
  311.     my $group = '';
  312.     my $tag;
  313.     foreach $tag ($exifTool->GetFoundTags('Group0')) {
  314.         if ($group ne $exifTool->GetGroup($tag)) {
  315.             $group = $exifTool->GetGroup($tag);
  316.             print "---- $group ----\n";
  317.         }
  318.         my $val = $info->{$tag};
  319.         if (ref $val eq 'SCALAR') {
  320.             if ($$val =~ /^Binary data/) {
  321.                 $val = "($$val)";
  322.             } else {
  323.                 my $len = length($$val);
  324.                 $val = "(Binary data $len bytes)";
  325.             }
  326.         }
  327.         printf("%-32s : %s\n", $exifTool->GetDescription($tag), $val);
  328.     }
  329.  
  330. =item Notes:
  331.  
  332. ExifTool returns all values as byte strings, even values which are natively
  333. UTF-8 as with XMP.
  334.  
  335. As well as tags representing information extracted from the image,
  336. the following tags generated by ExifTool may be returned:
  337.  
  338.     ExifToolVersion - The ExifTool version number.
  339.  
  340.     Error - An error message if the image could not be processed.
  341.  
  342.     Warning - A warning message if problems were encountered while
  343.               processing the image.
  344.  
  345. =back
  346.  
  347. =head2 Options
  348.  
  349. Get/set ExifTool options.  This function can be called to set the default
  350. options for an ExifTool object.  Options set this way are in effect for
  351. all function calls but may be overridden by options passed as arguments
  352. to some functions.
  353.  
  354. The initial default options are obtained from values in the
  355. %Image::ExifTool::UserDefined::Options hash if it exists.  See the
  356. .ExifTool_config file in the full ExifTool distribution for details.
  357.  
  358.     # exclude the 'OwnerName' tag from returned information
  359.     $exifTool->Options(Exclude => 'OwnerName');
  360.  
  361.     # only get information in EXIF or MakerNotes groups
  362.     $exifTool->Options(Group0 => ['EXIF', 'MakerNotes']);
  363.  
  364.     # ignore information from IFD1
  365.     $exifTool->Options(Group1 => '-IFD1');
  366.  
  367.     # sort by groups in family 2, and extract unknown tags
  368.     $exifTool->Options(Sort => 'Group2', Unknown => 1);
  369.  
  370.     # reset DateFormat option
  371.     $exifTool->Options(DateFormat => undef);
  372.  
  373.     # do not extract duplicate tag names
  374.     $oldSetting = $exifTool->Options(Duplicates => 0);
  375.  
  376.     # get current Verbose setting
  377.     $isVerbose = $exifTool->Options('Verbose');
  378.  
  379. =over 4
  380.  
  381. =item Inputs:
  382.  
  383. 0) ExifTool object reference.
  384.  
  385. 1) Option parameter name.
  386.  
  387. 2) [optional] Option parameter value (may be undef to clear option).
  388.  
  389. 3-N) [optional] Additional parameter/value pairs.
  390.  
  391. =item Option Parameters:
  392.  
  393. =over 4
  394.  
  395. =item Binary
  396.  
  397. Flag to extract the value data for all binary tags.  Tag values representing
  398. large binary data blocks (ie. ThumbnailImage) are not necessarily extracted
  399. unless this option is set or the tag is specifically requested by name.
  400. Default is 0.
  401.  
  402. =item ByteOrder
  403.  
  404. The byte order for newly created EXIF segments when writing.  Note that if
  405. EXIF information already exists, the existing order is maintained.  Valid
  406. values are 'MM', 'II' and undef.  If ByteOrder is not defined (the default),
  407. then the maker note byte order is used (if they are being copied), otherwise
  408. big-endian ('MM') order is assumed.  This can also be set via the
  409. ExifByteOrder tag, but the ByteOrder option takes precedence if both are
  410. set.
  411.  
  412. =item Charset
  413.  
  414. Character set for encoding characters with code points above U+007F.  Valid
  415. values are listed below, case is not significant:
  416.  
  417.   Value        Alias(es)        Description
  418.   -----------  ---------------  ----------------------------------
  419.   UTF8         cp65001, UTF-8   UTF-8 characters
  420.   Latin        cp1252, Latin1   Windows Latin1 (West European)
  421.   Latin2       cp1250           Windows Latin2 (Central European)
  422.   Cyrillic     cp1251, Russian  Windows Cyrillic
  423.   Greek        cp1253           Windows Greek
  424.   Turkish      cp1254           Windows Turkish
  425.   Hebrew       cp1255           Windows Hebrew
  426.   Arabic       cp1256           Windows Arabic
  427.   Baltic       cp1257           Windows Baltic
  428.   Vietnam      cp1258           Windows Vietnamese
  429.   Thai         cp874            Windows Thai
  430.   MacRoman     cp10000, Roman   Macintosh Roman
  431.   MacLatin2    cp10029          Macintosh Latin2 (Central Europe)
  432.   MacCyrillic  cp10007          Macintosh Cyrillic
  433.   MacGreek     cp10006          Macintosh Greek
  434.   MacTurkish   cp10081          Macintosh Turkish
  435.   MacRomanian  cp10010          Macintosh Romanian
  436.   MacIceland   cp10079          Macintosh Icelandic
  437.   MacCroatian  cp10082          Macintosh Croatian
  438.  
  439. Note that this option affects some types of information when reading/writing
  440. the file and other types when getting/setting tag values, so it must be
  441. defined for both types of access.
  442.  
  443. =item CharsetID3
  444.  
  445. Character encoding to assume for ID3v1 strings.  By the specification ID3v1
  446. strings should be encoded in ISO 8859-1 (essentially Latin), but some
  447. applications may use local encoding instead.  Default is Latin.
  448.  
  449. =item CharsetIPTC
  450.  
  451. Fallback IPTC character set to assume if IPTC information contains no
  452. CodedCharacterSet tag.  Possible values are the same as the L</Charset>
  453. option.  Default is Latin.
  454.  
  455. Note that this option affects some types of information when reading/writing
  456. the file and other types when getting/setting tag values, so it must be
  457. defined for both types of access.
  458.  
  459. =item Compact
  460.  
  461. Flag to write compact output.  Default is 0.  The XMP specification suggests
  462. that the data be padded with blanks to allow in-place editing.  By setting
  463. this flag, 2kB is saved for files with XMP data.
  464.  
  465. =item Composite
  466.  
  467. Flag to calculate Composite tags automatically.  Default is 1.
  468.  
  469. =item Compress
  470.  
  471. Flag to write new values in compressed format if possible.  Has no effect
  472. unless Compress::Zlib is installed.  Default is 0.
  473.  
  474. =item CoordFormat
  475.  
  476. Format for printing GPS coordinates.  This is a printf format string with
  477. specifiers for degrees, minutes and seconds in that order, however minutes
  478. and seconds may be omitted.  For example, the following table gives the
  479. output for the same coordinate using various formats:
  480.  
  481.       CoordFormat        Example Output
  482.   -------------------  ------------------
  483.   q{%d deg %d' %.2f"}  54 deg 59' 22.80"  (default for reading)
  484.   q{%d %d %.8f}        54 59 22.80000000  (default for copying)
  485.   q{%d deg %.4f min}   54 deg 59.3800 min
  486.   q{%.6f degrees}      54.989667 degrees
  487.  
  488. Note:  To avoid loss of precision, the default coordinate format is
  489. different when copying tags with L</SetNewValuesFromFile>.
  490.  
  491. =item DateFormat
  492.  
  493. Format for printing date/time values.  See C<strftime> in the L<POSIX>
  494. package for details about the format string.  The default is similar to a
  495. format of "%Y:%m:%d %H:%M:%S".  If date can not be converted, value is left
  496. unchanged unless the StrictDate option is set.  Timezones are ignored.
  497.  
  498. =item Duplicates
  499.  
  500. Flag to return values from tags with duplicate names when extracting
  501. information.  Default is 1.
  502.  
  503. =item Escape
  504.  
  505. Escape special characters in extracted values for HTML or XML.  Also
  506. unescapes HTML or XML character entities in input values passed to
  507. L</SetNewValue>.  Valid settings are 'HTML', 'XML' or undef.  Default is
  508. undef.
  509.  
  510. =item Exclude
  511.  
  512. Exclude specified tags from tags extracted from an image.  The option value
  513. is either a tag name or reference to a list of tag names to exclude.  The
  514. case of tag names is not significant.  This option is ignored for
  515. specifically requested tags.  Tags may also be excluded by preceeding their
  516. name with a '-' in the arguments to L</ImageInfo>.
  517.  
  518. =item ExtractEmbedded
  519.  
  520. Flag to extract information from embedded documents in PostScript files and
  521. the AIPrivateData stream in PDF files, and embedded MPF images in JPEG and
  522. MPO files.  Default is 0.
  523.  
  524. =item FastScan
  525.  
  526. Flag to increase speed of extracting information from JPEG images.  With
  527. this option set to 1, ExifTool will not scan to the end of a JPEG image to
  528. check for an AFCP, CanonVRD, FotoStation, PhotoMechanic, MIE or PreviewImage
  529. trailer.  This also stops the parsing after the first comment in GIF images,
  530. and at the audio/video data with RIFF-format files (AVI, WAV, etc), so any
  531. trailing metadata (ie. XMP written by some utilities) may be missed.  When
  532. combined with the ScanForXMP option, prevents scanning for XMP in recognized
  533. file types.  With a value of 2, ExifTool will also avoid extracting any EXIF
  534. MakerNote information.  Default is 0.
  535.  
  536. =item FixBase
  537.  
  538. Fix maker notes base offset.  A common problem with image editing software
  539. is that offsets in the maker notes are not adjusted properly when the file
  540. is modified.  This may cause the wrong values to be extracted for some maker
  541. note entries when reading the edited file.  FixBase specifies an integer
  542. value to be added to the maker notes base offset.  It may also be set to the
  543. empty string ('') for ExifTool will take its best guess at the correct base,
  544. or undef (the default) for no base adjustment.
  545.  
  546. =item GeoMaxIntSecs
  547.  
  548. Maximum interpolation time in seconds for geotagging.  Geotagging fails if
  549. the Geotime value lies between two fixes in the same track which are
  550. separated by a number of seconds greater than this.  Default is 1800.
  551.  
  552. =item GeoMaxExtSecs
  553.  
  554. Maximum extrapolation time in seconds for geotagging.  Geotagging fails if
  555. the Geotime value lies outside a GPS track by a number of seconds greater
  556. than this.  Default is 1800.
  557.  
  558. =item GeoMaxHDOP
  559.  
  560. Maximum Horizontal (2D) Dilution Of Precision for geotagging.  GPS fixes are
  561. ignored if the HDOP is greater than this.  Default is undef.
  562.  
  563. =item GeoMaxPDOP
  564.  
  565. Maximum Position (3D) Dilution Of Precision for geotagging.  GPS fixes are
  566. ignored if the PDOP is greater than this.  Default is undef.
  567.  
  568. =item GeoMinSats
  569.  
  570. Minimum number of satellites for geotagging.  GPS fixes are ignored if the
  571. number of acquired satellites is less than this.  Default is undef.
  572.  
  573. =item Group#
  574.  
  575. Extract tags only for specified groups in family # (Group0 assumed if #
  576. not given).  The option value may be a single group name or a reference
  577. to a list of groups.  Case is significant in group names.  Specify a group
  578. to be excluded by preceding group name with a '-'.  See L</GetGroup> for a
  579. description of group families, and L</GetAllGroups [static]> for lists of
  580. group names.
  581.  
  582. =item HtmlDump
  583.  
  584. Dump information in hex to dynamic HTML web page.  The value may be 0-3 for
  585. increasingly larger limits on the maximum block size.  Default is 0.  Output
  586. goes to the file specified by the TextOut option (\*STDOUT by default).
  587.  
  588. =item HtmlDumpBase
  589.  
  590. Specifies base for HTML dump offsets.  If not defined, the EXIF/TIFF base
  591. offset is used.  Set to 0 for absolute offsets.  Default is undef.
  592.  
  593. =item IgnoreMinorErrors
  594.  
  595. Flag to ignore minor errors.  Causes minor errors to be downgraded to
  596. warnings, and minor warnings to be ignored.  This option is provided mainly
  597. to allow writing of files when minor errors occur, but also allows thumbnail
  598. and preview images to be extracted even if they don't have a recognizable
  599. header.  Minor errors/warnings are denoted by '[minor]' at the start of the
  600. message.
  601.  
  602. =item Lang
  603.  
  604. Localized language for exiftool tag descriptions, etc.  Available languages
  605. are given by the Image::ExifTool::Lang module names (ie. 'fr').  If the
  606. specified language isn't available, the option is not changed.  May be set
  607. to undef to select the built-in default language.  Default is 'en'.
  608.  
  609. =item LargeFileSupport
  610.  
  611. Flag to indicate that 64-bit file offsets are supported on this system.
  612. Default is 0.
  613.  
  614. =item List
  615.  
  616. Flag to extract lists of PrintConv values into arrays instead of joining
  617. them into a string of values.  The L</ListSep> option specifies the
  618. separator used when combining values.  Default is 0.
  619.  
  620. =item ListSep
  621.  
  622. Separator string used to join lists of PrintConv values when L</List> option
  623. is not set.  Default is ', '.
  624.  
  625. =item ListSplit
  626.  
  627. Regular expression used to split values of list-type tags into individual
  628. items when writing.  (ie. use ',\\s*' to split a comma-separated list.) 
  629. Default is undef.
  630.  
  631. =item MakerNotes
  632.  
  633. Option to extract MakerNotes and other writable subdirectories (such as
  634. PrintIM) as a data block.  Normally when the MakerNotes are extracted they
  635. are rebuilt to include data outside the boundaries of the original maker
  636. note data block, but a value of 2 disables this feature.  Possible values
  637. are:
  638.  
  639.   0 - Do not extract writable subdirectories [default]
  640.   1 - Extract and rebuild maker notes into self-contained block
  641.   2 - Extract without rebuilding maker notes
  642.  
  643. =item MissingTagValue
  644.  
  645. Value for missing tags in expressions evaluated by L</SetNewValuesFromFile>.
  646. If not set, a minor error is issued for missing values, or the value is set
  647. to '' if L</IgnoreMinorErrors> is set.  Default is undef.
  648.  
  649. =item PrintConv
  650.  
  651. Flag to enable automatic print conversion.  Also enables inverse
  652. print conversion for writing.  Default is 1.
  653.  
  654. =item ScanForXMP
  655.  
  656. Flag for scan all files (even unrecognized formats) for XMP information
  657. unless XMP was already found in the file.  When combined with the FastScan
  658. option, only unrecognized file types are scanned for XMP.  Default is 0.
  659.  
  660. =item Sort
  661.  
  662. Specifies order to sort tags in returned list:
  663.  
  664.   Alpha  - Sort alphabetically
  665.   File   - Sort in order that tags were found in the file
  666.   Group# - Sort by tag group, where # is zero or more family
  667.            numbers separated by colons. If # is not specified,
  668.            Group0 is assumed.  See GetGroup for a description
  669.            of group families.
  670.   Input  - Sort in same order as input tag arguments (default)
  671.  
  672. =item StrictDate
  673.  
  674. Flag to return undefined value for any date which can't be converted when
  675. the DateFormat option is used.  Default is 0.
  676.  
  677. =item Struct
  678.  
  679. Flag to return XMP structures as hash references instead of flattening into
  680. individual tags.  Default is 0.  Currently, the struct feature applies only
  681. when reading (so L</SetNewValue> can not be called with a hash reference
  682. when writing).
  683.  
  684. =item TextOut
  685.  
  686. Output file reference for Verbose and HtmlDump options.  Default is
  687. \*STDOUT.
  688.  
  689. =item Unknown
  690.  
  691. Flag to get the values of unknown tags.  If set to 1, unknown tags are
  692. extracted from EXIF (or other tagged-format) directories.  If set to 2,
  693. unknown tags are also extracted from binary data blocks.  Default is 0.
  694.  
  695. =item Verbose
  696.  
  697. Print verbose messages to file specified by TextOut option.  Value may be
  698. from 0 to 5 for increasingly verbose messages.  Default is 0.  With the
  699. verbose option set, messages are printed to the console as the file is
  700. parsed.  Level 1 prints the tag names and raw values.  Level 2 adds more
  701. details about the tags.  Level 3 adds a hex dump of the tag data, but with
  702. limits on the number of bytes dumped.  Levels 4 and 5 remove the dump limit
  703. on tag values and JPEG segment data respectively.
  704.  
  705. =back
  706.  
  707. =item Return Values:
  708.  
  709. The original value of the last specified parameter.
  710.  
  711. =back
  712.  
  713. =head2 ClearOptions
  714.  
  715. Reset all options to their default values.  Loads user-defined default
  716. option values from the %Image::ExifTool::UserDefined::Options hash in the
  717. .ExifTool_config file if it exists.
  718.  
  719.     $exifTool->ClearOptions();
  720.  
  721. =over 4
  722.  
  723. =item Inputs:
  724.  
  725. 0) ExifTool object reference
  726.  
  727. =item Return Values:
  728.  
  729. (none)
  730.  
  731. =back
  732.  
  733. =head2 ExtractInfo
  734.  
  735. Extract all meta information from an image.
  736.  
  737.     $success = $exifTool->ExtractInfo('image.jpg', \%options);
  738.  
  739. =over 4
  740.  
  741. =item Inputs:
  742.  
  743. L</ExtractInfo> takes exactly the same arguments as L</ImageInfo>.  The only
  744. difference is that a list of tag keys is not returned if an ARRAY reference
  745. is given.  The following options are effective in the call to
  746. L</ExtractInfo>:
  747.  
  748. Binary, Charset, CharsetID3, CharsetIPTC, Composite, ExtractEmbedded,
  749. FastScan, FixBase, HtmlDump, HtmlDumpBase, IgnoreMinorErrors, Lang,
  750. LargeFileSupport, MakerNotes, ScanForXMP, Struct, TextOut, Unknown and
  751. Verbose.
  752.  
  753. =item Return Value:
  754.  
  755. 1 if this was a recognized file format, 0 otherwise (and 'Error' tag set).
  756.  
  757. =back
  758.  
  759. =head2 GetInfo
  760.  
  761. L</GetInfo> is called to return meta information after it has been extracted
  762. from the image by a previous call to L</ExtractInfo> or L</ImageInfo>. This
  763. function may be called repeatedly after a single call to L</ExtractInfo> or
  764. L</ImageInfo>.
  765.  
  766.     # get image width and hieght only
  767.     $info = $exifTool->GetInfo('ImageWidth', 'ImageHeight');
  768.  
  769.     # get information for all tags in list (list updated with tags found)
  770.     $info = $exifTool->GetInfo(\@ioTagList);
  771.  
  772.     # get all information in Author or Location groups
  773.     $info = $exifTool->GetInfo({Group2 => ['Author', 'Location']});
  774.  
  775. =over 4
  776.  
  777. =item Inputs:
  778.  
  779. Inputs are the same as L</ExtractInfo> and L</ImageInfo> except that an
  780. image can not be specified.  Options in effect are:
  781.  
  782. Charset, CoordFormat, DateFormat, Duplicates, Escape, Exclude, Group#, Lang,
  783. List, ListSep, StrictDate, PrintConv, Sort (if a tag list reference is
  784. given) and StrictDate.
  785.  
  786. =item Return Value:
  787.  
  788. Reference to information hash, the same as with L</ImageInfo>.
  789.  
  790. =back
  791.  
  792. =head2 WriteInfo
  793.  
  794. Write meta information to a file.  The specified source file is rewritten to
  795. the same-type destination file with new information as specified by previous
  796. calls to L</SetNewValue>.  The necessary segments and/or directories are
  797. created in the destination file as required to store the specified
  798. information.  May be called repeatedly to write the same information to
  799. additional files without the need to call L</SetNewValue> again.
  800.  
  801.     # add information to a source file, writing output to new file
  802.     $exifTool->WriteInfo($srcfile, $dstfile);
  803.  
  804.     # create XMP data file from scratch
  805.     $exifTool->WriteInfo(undef, $dstfile, 'XMP');
  806.  
  807.     # edit file in place (you do have backups, right?)
  808.     $exifTool->WriteInfo($srcfile);
  809.  
  810. =over 4
  811.  
  812. =item Inputs:
  813.  
  814. 0) ExifTool object reference
  815.  
  816. 1) Source file name, file reference, scalar reference, or undef to create a
  817. file from scratch
  818.  
  819. 2) [optional] Destination file name, file reference, scalar reference, or
  820. undef to edit in place
  821.  
  822. 3) [optional] Destination file type
  823.  
  824. =item Return Value:
  825.  
  826. 1 if file was written OK, 2 if file was written but no changes made, 0 on
  827. file write error.
  828.  
  829. If an error code is returned, an Error tag is set and GetValue('Error') can
  830. be called to obtain the error description.  A Warning tag may be set even if
  831. this routine is successful.  Calling this routine clears any pre-existing
  832. Error and Warning tags.
  833.  
  834.     $errorMessage = $exifTool->GetValue('Error');
  835.     $warningMessage = $exifTool->GetValue('Warning');
  836.  
  837. =item Notes:
  838.  
  839. The source file name may be undefined to create a file from scratch
  840. (currently only XMP, MIE, ICC, VRD and EXIF files can be created in this way
  841. -- see L</CanCreate> for details).  If undefined, the destination file type
  842. is required unless the type can be determined from the destination file
  843. name.
  844.  
  845. If a destination file name is given, the specified file must not exist
  846. because an existing destination file will not be overwritten.  The
  847. destination file name may be undefined to edit the source file in place
  848. (make sure you have backups!).  In this case, if a source file name is
  849. provided, a temporary file is created and renamed to replace the source file
  850. if no errors occurred while writing.  Otherwise, if a source file reference
  851. or scalar reference is used, the image is first written to memory then
  852. copied back to replace the original if there were no errors.
  853.  
  854. The destination file type is only used if the source file is undefined.
  855.  
  856. =back
  857.  
  858. The following ExifTool options are effective in the call to L</WriteInfo>:
  859.  
  860. ByteOrder, Charset, CharsetID3, CharsetIPTC, Compact, Compress, FixBase,
  861. IgnoreMinorErrors and Verbose.
  862.  
  863. =head2 CombineInfo
  864.  
  865. Combine information from more than one information hash into a single hash.
  866.  
  867.     $info = $exifTool->CombineInfo($info1, $info2, $info3);
  868.  
  869. =over 4
  870.  
  871. =item Inputs:
  872.  
  873. 0) ExifTool object reference
  874.  
  875. 1-N) Information hash references
  876.  
  877. =back
  878.  
  879. If the Duplicates option is disabled and duplicate tags exist, the order of
  880. the hashes is significant.  In this case, the value used is the first value
  881. found as the hashes are scanned in order of input.  The Duplicates option
  882. is the only option that is in effect for this function.
  883.  
  884. =head2 GetTagList
  885.  
  886. Get a sorted list of tags from the specified information hash or tag list.
  887.  
  888.     @tags = $exifTool->GetTagList($info, 'Group0');
  889.  
  890. =over 4
  891.  
  892. =item Inputs:
  893.  
  894. 0) ExifTool object reference,
  895.  
  896. 1) [optional] Information hash reference or tag list reference,
  897.  
  898. 2) [optional] Sort order ('File', 'Input', 'Alpha' or 'Group#').
  899.  
  900. If the information hash or tag list reference is not provided, then the list
  901. of found tags from the last call to L</ImageInfo>, L</ExtractInfo> or
  902. L</GetInfo> is used instead, and the result is the same as if
  903. L</GetFoundTags> was called.  If sort order is not specified, the sort order
  904. is taken from the current options settings.
  905.  
  906. =item Return Values:
  907.  
  908. A list of tags in the specified order.
  909.  
  910. =back
  911.  
  912. =head2 GetFoundTags
  913.  
  914. Get list of found tags in specified sort order.  The found tags are the tags
  915. for the information obtained from the most recent call to L</ImageInfo>,
  916. L</ExtractInfo> or L</GetInfo> for this object.
  917.  
  918.     @tags = $exifTool->GetFoundTags('File');
  919.  
  920. =over 4
  921.  
  922. =item Inputs:
  923.  
  924. 0) ExifTool object reference
  925.  
  926. 1) [optional] Sort order ('File', 'Input', 'Alpha' or 'Group#')
  927.  
  928. If sort order is not specified, the sort order from the ExifTool options is
  929. used.
  930.  
  931. =item Return Values:
  932.  
  933. A list of tag keys in the specified order.
  934.  
  935. =back
  936.  
  937. =head2 GetRequestedTags
  938.  
  939. Get list of requested tags.  These are the tags that were specified in the
  940. arguments of the most recent call to L</ImageInfo>, L</ExtractInfo> or
  941. L</GetInfo>, including tags specified via a tag list reference. Shortcut
  942. tags are expanded in the list.
  943.  
  944.     @tags = $exifTool->GetRequestedTags();
  945.  
  946. =over 4
  947.  
  948. =item Inputs:
  949.  
  950. (none)
  951.  
  952. =item Return Values:
  953.  
  954. List of requested tag keys in the same order that the tags were specified.
  955. Note that this list will be empty if tags were not specifically requested
  956. (ie. If extracting all tags).
  957.  
  958. =back
  959.  
  960. =head2 GetValue
  961.  
  962. Get the value of a specified tag.  The returned value is either the
  963. human-readable (PrintConv) value, the converted machine-readable (ValueConv)
  964. value, or the original raw (Raw) value.  If the value type is not specified,
  965. the PrintConv value is returned if the PrintConv option is set, otherwise
  966. the ValueConv value is returned.  The PrintConv values are same as the
  967. values returned by L</ImageInfo> and L</GetInfo> in the tag/value hash
  968. unless the PrintConv option is disabled.
  969.  
  970. Tags which represent lists of multiple values (as may happen with 'Keywords'
  971. for example) are handled specially.  In scalar context, the returned
  972. PrintConv value for these tags is either a string of values or a list
  973. reference (depending on the List option setting), and the ValueConv value is
  974. always a list reference.  But in list context, L</GetValue> always returns
  975. the list itself.
  976.  
  977. Note that L</GetValue> requires a case-sensitive tag key as an argument.  To
  978. retrieve tag information based on a case-insensitive tag name (with an
  979. optional group specifier), use L</GetInfo> instead.
  980.  
  981.     # PrintConv example
  982.     my $val = $exifTool->GetValue($tag);
  983.     if (ref $val eq 'SCALAR') {
  984.         print "$tag = (unprintable value)\n";
  985.     } else {
  986.         print "$tag = $val\n";
  987.     }
  988.  
  989.     # ValueConv examples
  990.     my $val = $exifTool->GetValue($tag, 'ValueConv');
  991.     if (ref $val eq 'ARRAY') {
  992.         print "$tag is a list of values\n";
  993.     } elsif (ref $val eq 'SCALAR') {
  994.         print "$tag represents binary data\n";
  995.     } else {
  996.         print "$tag is a simple scalar\n";
  997.     }
  998.  
  999.     my @keywords = $exifTool->GetValue('Keywords', 'ValueConv');
  1000.  
  1001. =over 4
  1002.  
  1003. =item Inputs:
  1004.  
  1005. 0) ExifTool object reference
  1006.  
  1007. 1) Tag key
  1008.  
  1009. 2) [optional] Value type, 'PrintConv', 'ValueConv', 'Both' or 'Raw'
  1010.  
  1011. The default value type is 'PrintConv' if the PrintConv option is set,
  1012. otherwise the default is 'ValueConv'.  A value type of 'Both' returns both
  1013. ValueConv and PrintConv values as a list.
  1014.  
  1015. =item Return Values:
  1016.  
  1017. The value of the specified tag.  If the tag represents a list of values and
  1018. the List option is disabled then PrintConv returns a string of values,
  1019. otherwise a reference to the list is returned in scalar context.  The list
  1020. itself is returned in list context.  Values may also be scalar references to
  1021. binary data, or hash references if the Struct option is set.
  1022.  
  1023. Note: It is possible for L</GetValue> to return an undefined ValueConv or
  1024. PrintConv value (or an empty list in list context) even if the tag exists,
  1025. since it is possible for these conversions to yield undefined values.
  1026.  
  1027. =back
  1028.  
  1029. =head2 SetNewValue
  1030.  
  1031. Set the new value for a tag.  The routine may be called multiple times to
  1032. set the values of many tags before using L</WriteInfo> to write the new
  1033. values to an image.
  1034.  
  1035. For list-type tags (like Keywords), either call repeatedly with the same tag
  1036. name for each value, or call with a reference to the list of values.
  1037.  
  1038.     # set a new value for a tag (errors go to STDERR)
  1039.     $success = $exifTool->SetNewValue($tag, $value);
  1040.  
  1041.     # set a new value and capture any error message
  1042.     ($success, $errStr) = $exifTool->SetNewValue($tag, $value);
  1043.  
  1044.     # delete information for specified tag if it exists in image
  1045.     # (also resets AddValue and DelValue options for this tag)
  1046.     $exifTool->SetNewValue($tag);
  1047.  
  1048.     # reset all values from previous calls to SetNewValue()
  1049.     $exifTool->SetNewValue();
  1050.  
  1051.     # delete a specific keyword
  1052.     $exifTool->SetNewValue('Keywords', $word, DelValue => 1);
  1053.  
  1054.     # set keywords (a List-type tag) with two new values
  1055.     $exifTool->SetNewValue(Keywords => 'word1');
  1056.     $exifTool->SetNewValue(Keywords => 'word2');
  1057.     # equivalent, but set both in one call using an array reference
  1058.     $exifTool->SetNewValue(Keywords => ['word1','word2']);
  1059.  
  1060.     # add a keyword without replacing existing keywords in the file
  1061.     $exifTool->SetNewValue(Keywords => $word, AddValue => 1);
  1062.  
  1063.     # set a tag in a specific group
  1064.     $exifTool->SetNewValue(Headline => $val, Group => 'XMP');
  1065.     $exifTool->SetNewValue('XMP:Headline' => $val);  # (equivalent)
  1066.  
  1067.     # shift original date/time back by 1 hour
  1068.     $exifTool->SetNewValue(DateTimeOriginal => '1:00', Shift => -1);
  1069.  
  1070.     # write a tag only if it had a specific value
  1071.     # (the order of the following calls is not significant)
  1072.     $exifTool->SetNewValue(Title => $oldVal, DelValue => 1);
  1073.     $exifTool->SetNewValue(Title => $newVal);
  1074.  
  1075.     # write tag by numerical value
  1076.     $exifTool->SetNewValue(Orientation => 6, Type => 'ValueConv');
  1077.     $exifTool->SetNewValue('Orientation#' => 6);  # (equivalent)
  1078.  
  1079.     # delete all but EXIF tags
  1080.     $exifTool->SetNewValue('*');  # delete all...
  1081.     $exifTool->SetNewValue('EXIF:*', undef, Replace => 2); # ...but EXIF
  1082.  
  1083. =over 4
  1084.  
  1085. =item Inputs:
  1086.  
  1087. 0) ExifTool object reference
  1088.  
  1089. 1) [optional] Tag key or tag name, or undef to clear all new values.  A tag
  1090. name of '*' can be used when deleting tags to delete all tags, or all tags
  1091. in a specified group.  The tag name may be prefixed by group name, separated
  1092. by a colon (ie. 'EXIF:Artist'), which is equivalent to using a Group
  1093. option argument.  Also, a '#' may be appended to the tag name (ie.
  1094. 'EXIF:Orientation#'), with the same effect as setting Type to 'ValueConv'.
  1095.  
  1096. 2) [optional] New value for tag.  Undefined to delete tag from file.  May be
  1097. a scalar, scalar reference, or list reference to set a list of values.
  1098.  
  1099. 3-N) [optional] SetNewValue option/value pairs (see below).
  1100.  
  1101. =item SetNewValue Options:
  1102.  
  1103. =over 4
  1104.  
  1105. =item AddValue
  1106.  
  1107. Specifies that the value be added to an existing list rather than replacing
  1108. the list.  Valid values are 0 or 1.  Default is 0.
  1109.  
  1110. =item DelValue
  1111.  
  1112. Delete the existing tag if it has the specified value.  Valid values are
  1113. 0 or 1.  Default is 0.
  1114.  
  1115. =item EditGroup
  1116.  
  1117. Create tags in existing groups only.  Don't create new group.  Valid values
  1118. are 0 and 1.  Default is 0.
  1119.  
  1120. =item EditOnly
  1121.  
  1122. Edit tag only if it already exists.  Don't create new tag.  Valid values are
  1123. 0 and 1.  Default is 0.
  1124.  
  1125. =item Group
  1126.  
  1127. Specifies group name where tag should be written.  If not specified, tag is
  1128. written to highest priority group as specified by L</SetNewGroups>.  Any
  1129. family 0 or 1 group name may be used.  Case is not significant.
  1130.  
  1131. =item NoShortcut
  1132.  
  1133. Disables default behaviour of looking up tag in shortcuts if not found
  1134. otherwise.
  1135.  
  1136. =item Protected
  1137.  
  1138. Bit mask for tag protection levels to write.  Bit 0x01 allows writing of
  1139. 'unsafe' tags (ie. tags not copied automatically via
  1140. L</SetNewValuesFromFile>).  Bit 0x02 allows writing of 'protected' tags, and
  1141. should only be used internally by ExifTool.  See
  1142. L<Image::ExifTool::TagNames|Image::ExifTool::TagNames>, for a list of tag
  1143. names indicating 'unsafe' and 'protected' tags.  Default is 0.
  1144.  
  1145. =item Replace
  1146.  
  1147. Flag to replace the previous new value for this tag (ie. replace the value
  1148. set in a previous call to L</SetNewValue>).  Valid values are 0 (don't
  1149. replace), 1 (replace with specified new value) or 2 (reset previous new
  1150. value only).
  1151.  
  1152. =item Shift
  1153.  
  1154. Shift the tag by the specified value.  Currently only date/time tags can be
  1155. shifted.  Undefined for no shift, 1 for a positive shift, or -1 for a
  1156. negative shift.  If 0, the shift is applied only if the tag is shiftable,
  1157. and the shift is positive if AddValue is set, or negative if DelValue is
  1158. set.  Default is undef.  See
  1159. L<Image::ExifTool::Shift.pl|Image::ExifTool::Shift.pl> for more information.
  1160.  
  1161. =item Type
  1162.  
  1163. The type of value being set.  Valid values are PrintConv, ValueConv or Raw.
  1164. Default is PrintConv if the L</PrintConv> Option is set, otherwise
  1165. ValueConv.
  1166.  
  1167. =back
  1168.  
  1169. =item Return Values:
  1170.  
  1171. In scalar context, returns the number of tags set and error messages are
  1172. printed to STDERR.  In list context, returns the number of tags set and the
  1173. error string.
  1174.  
  1175. =item Notes:
  1176.  
  1177. When deleting groups of tags, the Replace option may be used as in the last
  1178. example above to exclude specific groups from a mass delete.  However, this
  1179. technique may not be used to exclude individual tags.  Instead, use
  1180. L</SetNewValuesFromFile> to recover the values of individual tags after
  1181. deleting a group.
  1182.  
  1183. =back
  1184.  
  1185. The following ExifTool options are effective in the call to L</SetNewValue>:
  1186.  
  1187. Charset, Escape, IgnoreMinorErrors, Lang, ListSep, ListSplit, PrintConv and
  1188. Verbose.
  1189.  
  1190. =head2 SetNewValuesFromFile
  1191.  
  1192. A very powerful routine that sets new values for tags from information found
  1193. in a specified file.
  1194.  
  1195.     # set new values from all information in a file...
  1196.     my $info = $exifTool->SetNewValuesFromFile($srcFile);
  1197.     # ...then write these values to another image
  1198.     my $result = $exifTool->WriteInfo($file2, $outFile);
  1199.  
  1200.     # set all new values, preserving original groups
  1201.     $exifTool->SetNewValuesFromFile($srcFile, '*:*');
  1202.  
  1203.     # set specific information
  1204.     $exifTool->SetNewValuesFromFile($srcFile, @tags);
  1205.  
  1206.     # set new value from a different tag in specific group
  1207.     $exifTool->SetNewValuesFromFile($fp, 'IPTC:Keywords>XMP-dc:Subject');
  1208.  
  1209.     # add all IPTC keywords to XMP subject list
  1210.     $exifTool->SetNewValuesFromFile($fp, 'IPTC:Keywords+>XMP-dc:Subject');
  1211.  
  1212.     # set new value from an expression involving other tags
  1213.     $exifTool->SetNewValuesFromFile($file,
  1214.         'Comment<ISO=$ISO Aperture=$aperture Exposure=$shutterSpeed');
  1215.  
  1216.     # set keywords list from the values of multiple tags
  1217.     $exifTool->SetNewValuesFromFile($file, { Replace => 0 },
  1218.         'keywords<xmp:subject', 'keywords<filename');
  1219.  
  1220.     # copy all EXIF information, preserving the original IFD
  1221.     # (without '>*.*' tags would be copied to the preferred EXIF IFD)
  1222.     $exifTool->SetNewValuesFromFile($file, 'EXIF:*>*:*');
  1223.  
  1224. =over 4
  1225.  
  1226. =item Inputs:
  1227.  
  1228. 0) ExifTool object reference
  1229.  
  1230. 1) File name, file reference, or scalar reference
  1231.  
  1232. 2-N) [optional] List of tag names to set or options hash references.  All
  1233. writable tags are set if none are specified.  The tag names are not case
  1234. sensitive, and may be prefixed by an optional family 0 or 1 group name,
  1235. separated by a colon (ie. 'exif:iso').  A leading '-' indicates tags to be
  1236. excluded (ie. '-comment'), or a trailing '#' causes the ValueConv value to
  1237. be copied (same as setting the Type option to 'ValueConv' for this tag
  1238. only).  An asterisk ('*') may be used for the tag name, and is useful when a
  1239. group is specified to set all tags from a group (ie. 'XMP:*').  A special
  1240. feature allows tag names of the form 'SRCTAG>DSTTAG' (or
  1241. 'DSTTAGE<lt>SRCTAG') to be specified to copy information to a tag with a
  1242. different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may use '*'
  1243. and/or be prefixed by a group name (ie. 'modifyDate>fileModifyDate' or
  1244. '*>xmp:*').  Copied tags may also be added or deleted from a list with
  1245. arguments of the form 'SRCTAG+>DSTTAG' or 'SRCTAG->DSTTAG'.  Tags are
  1246. evaluated in order, so exclusions apply only to tags included earlier in the
  1247. list.  An extension of this feature allows the tag value to be set from an
  1248. expression containing tag names with leading '$' symbols (ie.
  1249. 'CommentE<lt>the file is $filename').  Braces '{}' may be used around the tag
  1250. name to separate it from subsequent text, and a '$$' is used to to represent
  1251. a '$' symbol.  (The behaviour for missing tags in expressions is defined by
  1252. the L</MissingTagValue> option.)  Multiple options hash references may be
  1253. passed to set different options for different tags. Options apply to
  1254. subsequent tags in the argument list.
  1255.  
  1256. By default, this routine will commute information between same-named tags in
  1257. different groups, allowing information to be translated between images with
  1258. different formats.  This behaviour may be modified by specifying a group
  1259. name for extracted tags (even if '*' is used as a group name), in which case
  1260. the information is written to the original group, unless redirected to a
  1261. different group.  When '*' is used for a group name, the family 1 group of
  1262. the original tag is preserved.  (For example, specifying '*:*' copies all
  1263. information while preserving the original family 1 groups.)
  1264.  
  1265. =item SetNewValuesFromFile Options:
  1266.  
  1267. The options are the same was for L</SetNewValue>, and are passed directly
  1268. to L</SetNewValue> internally, with a few exceptions:
  1269.  
  1270. - The Replace option defaults to 1 instead of 0 as with L</SetNewValue>.
  1271.  
  1272. - The AddValue or DelValue option is set for individual tags if '+>' or '->'
  1273. (or '+E<lt>' or '-E<lt>') are used.
  1274.  
  1275. - The Group option is set for tags where a group name is given.
  1276.  
  1277. - The Protected flag is set to 1 for individually specified tags.
  1278.  
  1279. - The Type option also applies to extracted tags.
  1280.  
  1281. =item Return Values:
  1282.  
  1283. A hash of information that was set successfully.  May include Warning or
  1284. Error entries if there were problems reading the input file.
  1285.  
  1286. =item Notes:
  1287.  
  1288. The PrintConv option applies to this routine, but it normally should be left
  1289. on to provide more reliable transfer of information between groups.
  1290.  
  1291. If a preview image exists, it is not copied.  The preview image must be
  1292. transferred separately if desired, in a separate call to L</WriteInfo>
  1293.  
  1294. When simply copying all information between files of the same type, it is
  1295. usually desirable to preserve the original groups by specifying '*:*' for
  1296. the tags to set.
  1297.  
  1298. =back
  1299.  
  1300. =head2 GetNewValues
  1301.  
  1302. Get list of new Raw values for the specified tag.  These are the values
  1303. that will be written to file.  Only tags which support a 'List' may return
  1304. more than one value.
  1305.  
  1306.     $rawVal = $exifTool->GetNewValues($tag);
  1307.  
  1308.     @rawVals = $exifTool->GetNewValues($tag);
  1309.  
  1310. =over 4
  1311.  
  1312. =item Inputs:
  1313.  
  1314. 0) ExifTool object reference
  1315.  
  1316. 1) Tag name (case sensitive, group names not allowed)
  1317.  
  1318. =item Return Values:
  1319.  
  1320. List of new Raw tag values.  The list may be empty either if the tag isn't
  1321. being written, or if it is being deleted (ie. if L</SetNewValue> was called
  1322. without a value).
  1323.  
  1324. =back
  1325.  
  1326. =head2 CountNewValues
  1327.  
  1328. Return the total number of new values set.
  1329.  
  1330.     $numSet = $exifTool->CountNewValues();
  1331.     ($numSet, $numPseudo) = $exifTool->CountNewValues();
  1332.  
  1333. =over 4
  1334.  
  1335. =item Inputs:
  1336.  
  1337. 0) ExifTool object reference
  1338.  
  1339. =item Return Values:
  1340.  
  1341. In scalar context, returns the total number of tags with new values set.  In
  1342. list context, also returns the number of "pseudo" tag values which have been
  1343. set.  "Pseudo" tags are tags like FileName and FileModifyDate which are not
  1344. contained within the file and can be changed without rewriting the file.
  1345.  
  1346. =back
  1347.  
  1348. =head2 SaveNewValues
  1349.  
  1350. Save state of new values to be later restored by L</RestoreNewValues>.
  1351.  
  1352.     $exifTool->SaveNewValues();         # save state of new values
  1353.     $exifTool->SetNewValue(ISO => 100); # set new value for ISO
  1354.     $exifTool->WriteInfo($src, $dst1);  # write ISO + previous new values
  1355.     $exifTool->RestoreNewValues();      # restore previous new values
  1356.     $exifTool->WriteInfo($src, $dst2);  # write previous new values only
  1357.  
  1358. =over 4
  1359.  
  1360. =item Inputs:
  1361.  
  1362. 0) ExifTool object reference
  1363.  
  1364. =item Return Value:
  1365.  
  1366. None.
  1367.  
  1368. =back
  1369.  
  1370. =head2 RestoreNewValues
  1371.  
  1372. Restore new values to the settings that existed when L</SaveNewValues> was
  1373. last called.  May be called repeatedly after a single call to
  1374. L</SaveNewValues>.  See L</SaveNewValues> above for an example.
  1375.  
  1376. =over 4
  1377.  
  1378. =item Inputs:
  1379.  
  1380. 0) ExifTool object reference
  1381.  
  1382. =item Return Value:
  1383.  
  1384. None.
  1385.  
  1386. =back
  1387.  
  1388. =head2 SetFileModifyDate
  1389.  
  1390. Set the file modification time from the new value of the FileModifyDate tag.
  1391.  
  1392.     $exifTool->SetNewValue(FileModifyDate => '2000:01:02 03:04:05-05:00',
  1393.                            Protected => 1);
  1394.     $result = $exifTool->SetFileModifyDate($file);
  1395.  
  1396. =over 4
  1397.  
  1398. =item Inputs:
  1399.  
  1400. 0) ExifTool object reference
  1401.  
  1402. 1) File name
  1403.  
  1404. 2) [optional] Base time if applying shift (days before $^T)
  1405.  
  1406. =item Return Value:
  1407.  
  1408. 1 if the time was changed, 0 if nothing was done, or -1 if there was an
  1409. error setting the time.
  1410.  
  1411. =item Notes:
  1412.  
  1413. Equivalent to, but more efficient than calling L</WriteInfo> when only the
  1414. FileModifyDate tag has been set.  If a timezone is not specified in the
  1415. FileModifyDate value, local time is assumed.  When shifting FileModifyDate,
  1416. the time of the original file is used unless an optional base time is
  1417. specified.
  1418.  
  1419. =back
  1420.  
  1421. =head2 SetFileName
  1422.  
  1423. Set the file name and directory.  If not specified, the new file name is
  1424. derived from the new values of the FileName and Directory tags.  If the
  1425. FileName tag contains a '/', then the file is renamed into a new directory.
  1426. If FileName ends with '/', then it is taken as a directory name and the file
  1427. is moved into the new directory.  The new value for the Directory tag takes
  1428. precedence over any directory specified in FileName.
  1429.  
  1430.     $result = $exifTool->SetFileName($file);
  1431.     $result = $exifTool->SetFileName($file, $newName);
  1432.  
  1433. =over 4
  1434.  
  1435. =item Inputs:
  1436.  
  1437. 0) ExifTool object reference
  1438.  
  1439. 1) Current file name
  1440.  
  1441. 2) [optional] New file name
  1442.  
  1443. =item Return Value:
  1444.  
  1445. 1 if the file name or directory was changed, 0 if nothing was done, or -1 if
  1446. there was an error renaming the file.
  1447.  
  1448. =item Notes:
  1449.  
  1450. Will not overwrite existing files. New directories are created as necessary.
  1451.  
  1452. =back
  1453.  
  1454. =head2 SetNewGroups
  1455.  
  1456. Set the order of the preferred groups when adding new information.  In
  1457. subsequent calls to L</SetNewValue>, new information will be created in the
  1458. first valid group of this list.  This has an impact only if the group is not
  1459. specified when calling L</SetNewValue> and if the tag name exists in more
  1460. than one group.  The default order is EXIF, IPTC then XMP.  Any family 0
  1461. group name may be used.  Case is not significant.
  1462.  
  1463.     $exifTool->SetNewGroups('XMP','EXIF','IPTC');
  1464.  
  1465. =over 4
  1466.  
  1467. =item Inputs:
  1468.  
  1469. 0) ExifTool object reference
  1470.  
  1471. 1-N) Groups in order of priority.  If no groups are specified, the priorities
  1472. are reset to the defaults.
  1473.  
  1474. =item Return Value:
  1475.  
  1476. None.
  1477.  
  1478. =back
  1479.  
  1480. =head2 GetNewGroups
  1481.  
  1482. Get current group priority list.
  1483.  
  1484.     @groups = $exifTool->GetNewGroups();
  1485.  
  1486. =over 4
  1487.  
  1488. =item Inputs:
  1489.  
  1490. 0) ExifTool object reference
  1491.  
  1492. =item Return Values:
  1493.  
  1494. List of group names in order of write priority.  Highest priority first.
  1495.  
  1496. =back
  1497.  
  1498. =head2 GetTagID
  1499.  
  1500. Get the ID for the specified tag.  The ID is the IFD tag number in EXIF
  1501. information, the property name in XMP information, or the data offset in a
  1502. binary data block.  For some tags, such as Composite tags where there is no
  1503. ID, an empty string is returned.  In list context, also returns a language
  1504. code for the tag if available and different from the default language (ie.
  1505. with alternate language entries for XMP "lang-alt" tags).
  1506.  
  1507.     $id = $exifTool->GetTagID($tag);
  1508.     ($id, $lang) = $exifTool->GetTagID($tag);
  1509.  
  1510. =over 4
  1511.  
  1512. =item Inputs:
  1513.  
  1514. 0) ExifTool object reference
  1515.  
  1516. 1) Tag key
  1517.  
  1518. =item Return Values:
  1519.  
  1520. In scalar context, returns the tag ID or '' if there is no ID for this tag.
  1521. In list context, returns the tag ID (or '') and the language code (or
  1522. undef).
  1523.  
  1524. =back
  1525.  
  1526. =head2 GetDescription
  1527.  
  1528. Get description for specified tag.  This function will always return a
  1529. defined value.  In the case where the description doesn't exist, one is
  1530. generated from the tag name.
  1531.  
  1532. =over 4
  1533.  
  1534. =item Inputs:
  1535.  
  1536. 0) ExifTool object reference
  1537.  
  1538. 1) Tag key
  1539.  
  1540. =item Return Values:
  1541.  
  1542. A description for the specified tag.
  1543.  
  1544. =back
  1545.  
  1546. =head2 GetGroup
  1547.  
  1548. Get group name(s) for a specified tag.
  1549.  
  1550.     # return family 0 group name (ie. 'EXIF');
  1551.     $group = $exifTool->GetGroup($tag, 0);
  1552.  
  1553.     # return all groups (ie. qw{EXIF IFD0 Author Main})
  1554.     @groups = $exifTool->GetGroup($tag);
  1555.  
  1556.     # return groups as a string (ie. 'Main:IFD0:Author')
  1557.     $group = $exifTool->GetGroup($tag, ':3:1:2');
  1558.  
  1559.     # return groups as a simplified string (ie. 'IFD0:Author')
  1560.     $group = $exifTool->GetGroup($tag, '3:1:2');
  1561.  
  1562. =over 4
  1563.  
  1564. =item Inputs:
  1565.  
  1566. 0) ExifTool object reference
  1567.  
  1568. 1) Tag key
  1569.  
  1570. 2) [optional] Group family number, or string of numbers separated by colons
  1571.  
  1572. =item Return Values:
  1573.  
  1574. Group name (or '' if tag has no group).  If no group family is specified,
  1575. L</GetGroup> returns the name of the group in family 0 when called in scalar
  1576. context, or the names of groups for all families in list context.  Returns a
  1577. string of group names separated by colons if the input group family contains
  1578. a colon.  The string is simplified to remove a leading 'Main:' and adjacent
  1579. identical group names unless the family string begins with a colon.
  1580.  
  1581. =item Notes:
  1582.  
  1583. The group family numbers are currently available:
  1584.  
  1585.     0) Information Type             (ie. EXIF, XMP, IPTC)
  1586.     1) Specific Location            (ie. IFD0, XMP-dc)
  1587.     2) Category                     (ie. Author, Time)
  1588.     3) Document Number              (ie. Main, Doc1, Doc3-2)
  1589.     4) Instance Number              (ie. Copy1, Copy2, Copy3...)
  1590.  
  1591. Families 0 and 1 are based on the file structure, and are similar except
  1592. that family 1 is more specific -- it sub-divides the EXIF, MakerNotes, XMP
  1593. and ICC_Profile groups to give more detail about the specific location where
  1594. the information was found.  The EXIF group is split up based on the specific
  1595. IFD (Image File Directory), the MakerNotes group is divided into groups for
  1596. each manufacturer, and the XMP group is separated based on the XMP namespace
  1597. prefix.  Note that only common XMP namespaces are listed below but
  1598. additional namespaces may be present in some XMP data.  Also note that the
  1599. 'XMP-xmp...' group names may appear in the older form 'XMP-xap...' since
  1600. these names evolved as the XMP standard was developed.  The ICC_Profile
  1601. group is broken down to give information about the specific ICC_Profile tag
  1602. from which multiple values were extracted.  As well, information extracted
  1603. from the ICC_Profile header is separated into the ICC-header group.
  1604.  
  1605. Family 2 classifies information based on the logical category to which the
  1606. information refers.
  1607.  
  1608. Family 3 gives the document number when the L</ExtractEmbedded> option is
  1609. used.  Nested sub-documents (if they exist) are indicated by numbers
  1610. separated with dashes in the group name, to an arbitrary depth. (ie.
  1611. 'Doc2-3-1' is the 1st sub-sub-document of the 3rd sub-document of the 2nd
  1612. embedded document of the main file.)
  1613.  
  1614. Family 4 provides a method for differentiating tags when multiple tags exist
  1615. with the same name in the same location.  The primary instance of a tag (the
  1616. tag extracted when the Duplicates option is disabled and no group is
  1617. specified) has no family 4 group name, but additional instances have have
  1618. family 4 group names of 'Copy1', 'Copy2', 'Copy3', etc.
  1619.  
  1620. See L</GetAllGroups [static]> for complete lists of group names.
  1621.  
  1622. =back
  1623.  
  1624. =head2 GetGroups
  1625.  
  1626. Get list of group names that exist in the specified information.
  1627.  
  1628.     @groups = $exifTool->GetGroups($info, 2);
  1629.     @groups = $exifTool->GetGroups('3:1');
  1630.  
  1631. =over 4
  1632.  
  1633. =item Inputs:
  1634.  
  1635. 0) ExifTool object reference
  1636.  
  1637. 1) [optional] Info hash ref (default is all extracted info)
  1638.  
  1639. 2) [optional] Group family number, or string of numbers (default 0)
  1640.  
  1641. =item Return Values:
  1642.  
  1643. List of group names in alphabetical order. If information hash is not
  1644. specified, the group names are returned for all extracted information. See
  1645. L</GetGroup> for an description of family numbers and family number strings.
  1646.  
  1647. =back
  1648.  
  1649. =head2 BuildCompositeTags
  1650.  
  1651. Builds composite tags from required tags.  The composite tags are
  1652. convenience tags which are derived from the values of other tags.  This
  1653. routine is called automatically by L</ImageInfo> and L</ExtractInfo> if the
  1654. Composite option is set.
  1655.  
  1656. =over 4
  1657.  
  1658. =item Inputs:
  1659.  
  1660. 0) ExifTool object reference
  1661.  
  1662. =item Return Values:
  1663.  
  1664. (none)
  1665.  
  1666. =item Notes:
  1667.  
  1668. Tag values are calculated in alphabetical order unless a tag Require's or
  1669. Desire's another composite tag, in which case the calculation is deferred
  1670. until after the other tag is calculated. Composite tags may need to read
  1671. data from the image for their value to be determined, so for these
  1672. L</BuildCompositeTags> must be called while the image is available.  This is
  1673. only a problem if L</ImageInfo> is called with a filename (as opposed to a
  1674. file reference or scalar reference) since in this case the file is closed
  1675. before L</ImageInfo> returns.  However if you enable the Composite option,
  1676. L</BuildCompositeTags> is called from within L</ImageInfo> before the file
  1677. is closed.
  1678.  
  1679. =back
  1680.  
  1681. =head2 GetTagName [static]
  1682.  
  1683. Get name of tag from tag key.  This is a convenience function that
  1684. strips the embedded instance number, if it exists, from the tag key.
  1685.  
  1686. Note: "static" in the heading above indicates that the function does not
  1687. require an ExifTool object reference as the first argument.  All functions
  1688. documented below are also static.
  1689.  
  1690.     $tagName = Image::ExifTool::GetTagName($tag);
  1691.  
  1692. =over 4
  1693.  
  1694. =item Inputs:
  1695.  
  1696. 0) Tag key
  1697.  
  1698. =item Return Value:
  1699.  
  1700. Tag name.  This is the same as the tag key but has the instance number
  1701. removed.
  1702.  
  1703. =back
  1704.  
  1705. =head2 GetShortcuts [static]
  1706.  
  1707. Get a list of shortcut tags.
  1708.  
  1709. =over 4
  1710.  
  1711. =item Inputs:
  1712.  
  1713. (none)
  1714.  
  1715. =item Return Values:
  1716.  
  1717. List of shortcut tags (as defined in Image::ExifTool::Shortcuts).
  1718.  
  1719. =back
  1720.  
  1721. =head2 GetAllTags [static]
  1722.  
  1723. Get list of all available tag names.
  1724.  
  1725.     @tagList = Image::ExifTool::GetAllTags($group);
  1726.  
  1727. =over 4
  1728.  
  1729. =item Inputs:
  1730.  
  1731. 0) [optional] Group name, or string of group names separated by colons
  1732.  
  1733. =item Return Values:
  1734.  
  1735. A list of all available tags in alphabetical order, or all tags in a
  1736. specified group or intersection of groups.  The group name is case
  1737. insensitive, and any group in families 0-2 may be used except for EXIF
  1738. family 1 groups (ie. the specific IFD).
  1739.  
  1740. =back
  1741.  
  1742. =head2 GetWritableTags [static]
  1743.  
  1744. Get list of all writable tag names.
  1745.  
  1746.     @tagList = Image::ExifTool::GetWritableTags($group);
  1747.  
  1748. =over 4
  1749.  
  1750. =item Inputs:
  1751.  
  1752. 0) [optional] Group name, or string of group names separated by colons
  1753.  
  1754. =item Return Values:
  1755.  
  1756. A list of all writable tags in alphabetical order.  These are the tags for
  1757. which values may be set through L</SetNewValue>.  If a group name is given,
  1758. returns only writable tags in specified group(s).  The group name is case
  1759. insensitive, and any group in families 0-2 may be used except for EXIF
  1760. family 1 groups (ie. the specific IFD).
  1761.  
  1762. =back
  1763.  
  1764. =head2 GetAllGroups [static]
  1765.  
  1766. Get list of all group names in specified family.
  1767.  
  1768.     @groupList = Image::ExifTool::GetAllGroups($family);
  1769.  
  1770. =over 4
  1771.  
  1772. =item Inputs:
  1773.  
  1774. 0) Group family number (0-4)
  1775.  
  1776. =item Return Values:
  1777.  
  1778. A list of all groups in the specified family in alphabetical order.
  1779.  
  1780. =back
  1781.  
  1782. Here is a complete list of groups for each of these families:
  1783.  
  1784. =over 4
  1785.  
  1786. =item Family 0 (Information Type):
  1787.  
  1788. AFCP, AIFF, APE, APP0, APP12, APP13, APP14, APP15, APP4, APP5, APP6, APP8,
  1789. ASF, BMP, CanonVRD, Composite, DICOM, DNG, DjVu, Ducky, EXE, EXIF, ExifTool,
  1790. FLAC, File, Flash, FlashPix, Font, FotoStation, GIF, GeoTiff, H264, HTML,
  1791. ICC_Profile, ID3, IPTC, ITC, JFIF, JPEG, Jpeg2000, LNK, Leaf, M2TS, MIE,
  1792. MIFF, MNG, MPC, MPEG, MPF, MakerNotes, Meta, PDF, PICT, PNG, PSP,
  1793. PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, Rawzor,
  1794. Real, SVG, SigmaRaw, SonyIDC, Stim, Vorbis, XML, XMP, ZIP
  1795.  
  1796. =item Family 1 (Specific Location):
  1797.  
  1798. AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, BMP, Canon, CanonCustom,
  1799. CanonRaw, CanonVRD, Casio, Composite, DICOM, DNG, DjVu, DjVu-Meta, Ducky,
  1800. EPPIM, EXE, EXIF, ExifIFD, ExifTool, FLAC, File, Flash, FlashPix, Font,
  1801. FotoStation, FujiFilm, GIF, GPS, GeoTiff, GlobParamIFD, GraphConv, H264, HP,
  1802. HTML, HTML-dc, HTML-ncc, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm,
  1803. ICC-clrt, ICC-header, ICC-meas, ICC-view, ICC_Profile, ICC_Profile#, ID3,
  1804. ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC,
  1805. InteropIFD, JFIF, JPEG, JVC, Jpeg2000, KDC_IFD, Kodak, KodakBordersIFD,
  1806. KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, M2TS,
  1807. MAC, MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash,
  1808. MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
  1809. MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
  1810. MIFF, MNG, MPC, MPEG, MPF0, MPImage, MakerNotes, MakerUnknown, MetaIFD,
  1811. Minolta, MinoltaRaw, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,
  1812. Olympus, PDF, PICT, PNG, Panasonic, Pentax, PSP, PhotoMechanic, Photoshop,
  1813. PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, QuickTime, RAF,
  1814. RAF2, RIFF, RMETA, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3,
  1815. Real-RA4, Real-RA5, Real-RJMD, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
  1816. SRF#, SVG, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
  1817. System, Track#, Version#, Vorbis, XML, XMP, XMP-DICOM, XMP-MP,
  1818. XMP-PixelLive, XMP-acdsee, XMP-album, XMP-aux, XMP-cc, XMP-crs, XMP-dc,
  1819. XMP-dex, XMP-digiKam, XMP-exif, XMP-iptcCore, XMP-iptcExt, XMP-lr,
  1820. XMP-mediapro, XMP-microsoft, XMP-pdf, XMP-pdfx, XMP-photomech,
  1821. XMP-photoshop, XMP-plus, XMP-prism, XMP-prl, XMP-pur, XMP-rdf, XMP-tiff,
  1822. XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS,
  1823. XMP-xmpRights, XMP-xmpTPg, ZIP
  1824.  
  1825. =item Family 2 (Category):
  1826.  
  1827. Audio, Author, Camera, Document, ExifTool, Image, Location, Other, Printing,
  1828. Time, Unknown, Video
  1829.  
  1830. =item Family 3 (Document Number):
  1831.  
  1832. Doc#, Main
  1833.  
  1834. =item Family 4 (Instance Number):
  1835.  
  1836. Copy#
  1837.  
  1838. =back
  1839.  
  1840. =head2 GetDeleteGroups [static]
  1841.  
  1842. Get list of all deletable group names.
  1843.  
  1844.     @delGroups = Image::ExifTool::GetDeleteGroups();
  1845.  
  1846. =over 4
  1847.  
  1848. =item Inputs:
  1849.  
  1850. None.
  1851.  
  1852. =item Return Values:
  1853.  
  1854. A list of deletable group names in alphabetical order.  The current list of
  1855. deletable group names is:
  1856.  
  1857. AFCP, CIFF, CanonVRD, EXIF, ExifIFD, Ducky, File, FlashPix, FotoStation,
  1858. GlobParamIFD, GPS, IFD0, IFD1, InteropIFD, ICC_Profile, IPTC, JFIF,
  1859. MakerNotes, Meta, MetaIFD, MIE, PhotoMechanic, Photoshop, PNG, PrintIM,
  1860. RMETA, SubIFD, Trailer, XMP
  1861.  
  1862. All names in this list are either family 0 or family 1 group names, with the
  1863. exception of 'Trailer' which allows all trailers in JPEG and TIFF-format
  1864. images to be deleted at once, including unknown trailers.  To schedule a
  1865. group for deletion, call L</SetNewValue> with an undefined value and a tag
  1866. name like 'Trailer:*'.
  1867.  
  1868. =back
  1869.  
  1870. =head2 GetFileType [static]
  1871.  
  1872. Get type of file given file name.
  1873.  
  1874.     my $type = Image::ExifTool::GetFileType($filename);
  1875.     my $desc = Image::ExifTool::GetFileType($filename, 1);
  1876.  
  1877. =over 4
  1878.  
  1879. =item Inputs:
  1880.  
  1881. 0) [optional] File name (or just an extension)
  1882.  
  1883. 1) [optional]  Flag to return a description instead of a type
  1884.  
  1885. =item Return Value:
  1886.  
  1887. A string, based on the file extension, which indicates the basic format of
  1888. the file.  Note that some files may be based on other formats (like many RAW
  1889. image formats are based on TIFF).  In array context, may return more than
  1890. one file type if the file may be based on different formats.  Returns undef
  1891. if files with this extension are not yet supported by ExifTool.  Returns a
  1892. list of extensions for all recognized file types if no input extension is
  1893. specified.  Returns a more detailed description of the specific file format
  1894. when the description flag is set.
  1895.  
  1896. =back
  1897.  
  1898. =head2 CanWrite [static]
  1899.  
  1900. Can the specified file be written?
  1901.  
  1902.     my $writable = Image::ExifTool::CanWrite($filename);
  1903.  
  1904. =over 4
  1905.  
  1906. =item Inputs:
  1907.  
  1908. 0) File name or extension
  1909.  
  1910. =item Return Value:
  1911.  
  1912. True if ExifTool supports writing files of this type (based on the file
  1913. extension).
  1914.  
  1915. =back
  1916.  
  1917. =head2 CanCreate [static]
  1918.  
  1919. Can the specified file be created?
  1920.  
  1921.     my $creatable = Image::ExifTool::CanCreate($filename);
  1922.  
  1923. =over 4
  1924.  
  1925. =item Inputs:
  1926.  
  1927. 0) File name or extension
  1928.  
  1929. =item Return Value:
  1930.  
  1931. True if ExifTool can create files with this extension from scratch. 
  1932. Currently, this can only be done with XMP, MIE, ICC, VRD and EXIF files.
  1933.  
  1934. =back
  1935.  
  1936. =head1 AUTHOR
  1937.  
  1938. Copyright 2003-2010, Phil Harvey
  1939.  
  1940. This library is free software; you can redistribute it and/or modify it
  1941. under the same terms as Perl itself.
  1942.  
  1943. =head1 ACKNOWLEDGEMENTS
  1944.  
  1945. Many people have helped in the development of ExifTool through their bug
  1946. reports, comments and suggestions, and/or additions to the code.  See the
  1947. ACKNOWLEDGEMENTS in the individual Image::ExifTool modules and in
  1948. html/index.html of the Image::ExifTool distribution package for a list of
  1949. people who have contributed to this project.
  1950.  
  1951. =head1 SEE ALSO
  1952.  
  1953. L<exiftool(1)|exiftool>,
  1954. L<Image::ExifTool::TagNames(3pm)|Image::ExifTool::TagNames>,
  1955. L<Image::ExifTool::Shortcuts(3pm)|Image::ExifTool::Shortcuts>,
  1956. L<Image::ExifTool::Shift.pl|Image::ExifTool::Shift.pl>,
  1957. L<Image::Info(3pm)|Image::Info>,
  1958. L<Image::MetaData::JPEG(3pm)|Image::MetaData::JPEG>
  1959.  
  1960. =cut
  1961.  
  1962. # end
  1963.